package yunweiCloud;

import java.util.Scanner;

public class starPattern {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个方框的高度：");
        int n1 = scanner.nextInt();
        System.out.print("请输入第二个方框的高度：");
        int n2 = scanner.nextInt();
        
        // 获取两个图案的所有行
        String[] pattern1 = generatePattern(n1);
        String[] pattern2 = generatePattern(n2);
        
        // 确定最大行数以控制循环
        int maxLines = Math.max(pattern1.length, pattern2.length);
        
        // 并排输出两个图案
        for (int i = 0; i < maxLines; i++) {
            // 输出第一个图案的当前行（如果存在）
            String line1 = (i < pattern1.length) ? pattern1[i] : "";
            // 输出第二个图案的当前行（如果存在）
            String line2 = (i < pattern2.length) ? pattern2[i] : "";
            
            // 计算第一个图案行的实际显示宽度（去掉末尾空格）
            int displayWidth1 = line1.replaceAll("\\s+$", "").length();
            // 填充第一个图案行到固定宽度（这里假设每个图案最大宽度为4n+5）
            int paddingWidth1 = 4 * n1 + 5 - displayWidth1;
            String paddedLine1 = line1;
            if (paddingWidth1 > 0) {
                paddedLine1 = String.format("%-" + (displayWidth1 + paddingWidth1) + "s", line1);
            }
            
            // 输出拼接后的行
            System.out.println(paddedLine1 + "    " + line2);
        }
        
        scanner.close();
    }
    
    // 生成图案并返回每行的字符串数组
    public static String[] generatePattern(int n) {
        if (n % 2 != 0) {
            return new String[]{"当n为奇数时"};
        }
        
        // 计算图案总行数（上下部分各n/2行，加上中间行和首尾行）
        int totalLines = n + 1;
        String[] lines = new String[totalLines];
        int lineIndex = 0;
        
        // 生成图案的每一行
        StringBuilder sb = new StringBuilder();
        
        // 第一行
        sb.append("     ");
        for (int i = 0; i < 2 * n; i++) {
            sb.append((i % 2 == 0) ? "*" : " ");
        }
        lines[lineIndex++] = sb.toString();
        sb.setLength(0);
        
        // 上半部分
        for (int i = 1; i < n / 2; i++) {
            sb.append("     *");
            // 空格1
            for (int j = 1; j < 2 * i; j++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格2
            for (int t = 0; t < n - 2 * i - 2; t++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格3
            for (int t = 0; t < n - 2 * i - 2; t++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格4
            for (int k = 1; k < 2 * i; k++) {
                sb.append(" ");
            }
            sb.append("*");
            lines[lineIndex++] = sb.toString();
            sb.setLength(0);
        }
        
        // 中间行
        sb.append("     ");
        for (int i = 0; i < 2 * n - 1; i++) {
            if (i == n - 1) {
                sb.append("*");
            } else if (i % 2 == 0) {
                sb.append("*");
            } else {
                sb.append(" ");
            }
        }
        lines[lineIndex++] = sb.toString();
        sb.setLength(0);
        
        // 下半部分
        for (int i = 1; i < n / 2; i++) {
            sb.append("     *");
            // 空格1
            for (int j = 0; j < n - 2 * i - 1; j++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格2
            for (int k = 1; k < 2 * i - 1; k++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格3
            for (int t = 1; t < 2 * i - 1; t++) {
                sb.append(" ");
            }
            sb.append("*");
            // 空格4
            for (int j = 0; j < n - 2 * i - 1; j++) {
                sb.append(" ");
            }
            sb.append("*");
            lines[lineIndex++] = sb.toString();
            sb.setLength(0);
        }
        
        // 最后一行
        sb.append("     ");
        for (int i = 0; i < 2 * n; i++) {
            sb.append((i % 2 == 0) ? "*" : " ");
        }
        lines[lineIndex] = sb.toString();
        
        return lines;
	}

}
